<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // Symbol基本使用 (了解):

        // JS的数据类型： 值类型和引用类型
        //    值类型：Number String  Boolean Null Undefined  Symbol
        //    引用类型：Arry  Function  Object

        // 从上面我们可以看出Symbol(符号) 是Js的一个数据类型：

        // ES6 引入了一种新的原始数据类型Symbol，表示独一无二的值。
        // 它是 JavaScript 语言的第七种数据类型，是一种类似于字符串的数据类型。
        // Symbol特点
        //      1) Symbol的值是唯一的，用来解决命名冲突的问题
        //      2) Symbol值不能与其他数据进行运算

        // 使用Symbol 得到两个值，它们是不等的
        let s1 = Symbol();
        let s1_2 = Symbol();
        console.log(s1 === s1_2);
        console.log(s1_2);

        //添加标识的 Symbol
        let s2 = Symbol('尚硅谷');
        let s2_2 = Symbol('尚硅谷');
        console.log(s2 === s2_2);
        
        //使用 Symbol for 定义，产生相同的 symbol 的值
        let s3 = Symbol.for('尚硅谷');
        let s3_2 = Symbol.for('尚硅谷');
        console.log(s3 === s3_2); 

        // 我们可以为一个对象添加唯一的方法，不可覆盖的一个方法
        const ob = {name:"lisi"};
        ob.key = Symbol(); // 使用Symbol获取一个唯一号
        // 为ob添加一个方法
        ob[ob.key] = function(){
            console.log("Hello World!");
        }

        // 测试
        ob[ob.key]();
    </script>
</body>
</html>